The invention relates to data Input/Output (I/O) interfaces, and particularly the invention relates to the Universal Serial Bus (USB) and utilizing data intended for USB devices with non-USB devices.
The Universal Serial Bus (USB) is a well-known standard in the computer design and related industries. The USB bus is designed to be a user-friendly interface used to connect a personal computer (PC), including a laptop and like devices, to various external peripherals, e.g., a speaker, mouse, or keyboard. USB allows users to xe2x80x9chot-plugxe2x80x9d (or xe2x80x9chot-swapxe2x80x9d) a device into a USB connector and be assured that the device will be recognized by the Operating System (OS) of the PC without conflict with other devices. More specific information regarding the USB standard is available in the Universal Serial Bus Specification, Rev. 1.0 (Jan. 15, 1996), available on the World Wide Web at www.usb.org and incorporated herein by reference.
An example of a system 100 that may utilize the USB standard is shown in the functional block diagram of FIG. 1. FIG. 1 shows a processor 102 coupled to a host bus 106, and a memory 104, e.g., RAM, coupled to a memory bus 107. The host bus 106 and memory bus 107 are each in turn coupled to a system controller 108. In some systems, the system controller is referred to as a xe2x80x9cchipset.xe2x80x9d The system controller 108 interfaces the processor to various peripheral devices in the system. The peripheral devices in the system are coupled to one or more xe2x80x9csystem buses.xe2x80x9d For instance, some peripherals 112, 114, such as a disk drive controller, may reside on an ISA bus 109 (an Industry Standard Bus). Other peripherals 118, 120 reside on the PCI bus 110, which is a newer and generally the more favored standard system bus compared to ISA. Both the ISA standard and PCI standard are well-known in the art. A USB interface controller 124 is also coupled to the PCI bus 110. The USB interface controller 124 is couplable to a USB peripheral device 132, which is typically detachable from the USB interface 124.
A more detailed example of a USB interface controller unit 124 is shown in the block diagram of FIG. 2. USB interface controller 124 includes a host controller 140 coupled to the PCI or other system bus 110. The host controller 140 interfaces unit 124 to system bus 110, communicating data to and from a host system memory (e.g., memory 104) and controlling the flow of that data through USB interface controller 124. The host controller 140 transmits data to serial interface engine (SIE) 142. SIE 142 converts the data received in parallel format into a serial format and also formats the data, including any necessary framing, in accordance with the USB specification.
Once serialized and formatted, data is passed to a port 146 or 148. As shown, a USB interface controller may have multiple ports, e.g., 146, 148.
When serial data is received by ports 146 or 148 from a USB peripheral device, the data is passed to SIE 142, which decodes the data, i.e., extracts the raw data, and converts the raw data into a parallel format. SIE 142 then transmits the raw data to host controller 140, which ultimately communicates the data to host system 100.
As indicated on ports 146, 148 the USB interface controller 124 utilizes a two-wire differential signaling technique. Each port produces a positive signal 150 and a related negative signal 152, both of which are transmitted to a connected USB peripheral device 132. Because of this differential signaling technique as well as the long cables often utilized with USB peripheral devices (e.g., up to 5 meters), the ports on both the USB interface controller and USB peripheral devices are complex and expensive, requiring complex analog circuits with programmable drive strength and rise/fall characteristics. Such complex ports also tend to be physically large, consuming considerable die space compared with ports used with other buses and/or bus standards.
An example of a USB peripheral device 132 is shown in the block diagram of FIG. 3 as a USB speaker. Of course other USB peripheral devices are available, and a USB speaker is utilized for illustrative purposes only. The USB peripheral device 132 includes a differential port 160 and a Serial Interface Engine (SIE) 162. The port 160 and SIE 162 are similar to those found on the USB interface controller 124 on host system 100 and will be found in almost all types of USB peripheral devices. Once received, the SIE 162 decodes the signal and outputs raw data to CODEC 164, which performs analog conversion and otherwise prepares the data for transmission to speaker 166.
Although the USB standard includes the benefit of being user-friendly, supporting the USB standard consumes not only considerable real estate, e.g., to support the USB data formatting protocol as well as differential signaling, but also consumes considerable power, where both factors contribute to escalating PC costs. In the laptop market, where devices must not only be physically small, but must also consume relatively small amounts of power and still remain at a competitive price, these factors are significant obstacles.
Moreover, many vendors and consumers are demanding that PCs and PC-like devices support various amenities such as sound. For these reasons, various operating system and software developers are developing the software, including device drivers, to support USB peripheral devices and are demanding of PC and PC-like device manufacturers that a xe2x80x9cuser-friendlyxe2x80x9d USB interface controller be in place to provide an easy-to-use environment for end-users. A system that attempts to save power, real estate, and/or ultimate cost by sacrificing the USB interface controller will be at a disadvantage in that various vendors software will not be operable with or permitted to be operated with such systems.
Therefore, it is desirable to develop a method of utilizing the USB bus interface to the host system, but minimizing the costs of doing so in terms of real estate, power, and expense. To do so, a system and method is disclosed that emulates a USB peripheral device. Such a system is referred to herein as a USB Data Serializer (UDS) and interacts with the host system bus in a manner similar to that done by a host controller in a conventional USB interface controller. In other words, the UDS utilizes a system bus interface that appears to the host identical to a conventional USB system bus interface to communicate with the host. Instead of being couplable to a USB peripheral device, however, the UDS is couplable to non-USB devices, such as TTL devices for example. The UDS further includes a data formatter, which in many embodiments is programmable. The data formatter formats, or translates, data received from the host system bus via the system bus interface into a format usable by the non-USB device. Such format can be virtually any format and is determined only by which non-USB device is intended to be coupled to the system.
The UDS further includes a stored USB device identifier. This identifier is programmable in some embodiments. The USB device identifier is provided to the host system. The host system responds by configuring the system to operate with the identified USB device. The host system then communicates with the UDS in the same way it communicates with a USB interface controller, i.e., software that is used with USB devices in the host is still used. The UDS then formats the information received for use by the non-USB device. Likewise, when the UDS receives information from the non-USB peripheral device, the UDS de-formats the data and provides it through the system bus interface to the host system.
Thus, by use of a system and method in accordance with the invention, non-USB peripheral devices can be used with systems designed to interact with USB peripherals. Such a system will demand less real estate, less power, and will cost less than its USB counterpart, making such a system particularly useful in laptop and portable PC and PC-like devices.